package org.example.edusmart.service;

import org.example.edusmart.pojo.CourseDirectoryPojo;
import org.example.edusmart.pojo.CoursePojo;
import org.example.edusmart.request.TeaOrStu.CourseGradePOjo;
import org.example.edusmart.request.admin.CourseInfoPojo;
import java.util.HashMap;
import java.util.List;

public interface CourseService {
    /**
     * 教师新建课程
     * @param course
     * @return
     */
    int addCourse(CoursePojo course);


    /**
     * 将新建课程记录到教师列表
     * @param userId
     * @param courseId
     */
    void insertCourseIntoTeacher(int userId, int courseId);

    /**
     * 验证教师
     * @param courseId
     * @param userId
     * @return
     */
    Integer verifyTeaCourse(int courseId, int userId);

    /**
     * 获取用户课程列表
     * @param userId
     * @return
     */
    List<HashMap<String, Object>> getCourseList(int userId);

    /**
     * 上传课程资料
     * @param courseDirectory
     * @return
     */
    int uploadCourseDirectory(CourseDirectoryPojo courseDirectory);

    /**
     * 由学工号获取用户id
     * @param number
     * @return
     */
    int getUserIdByNumber(String number);

    /**
     * 拉学生进入课程
     * @param courseId
     * @param stuId
     */
    void inviteStudent(int courseId, int stuId);

    /**
     * 由课程id获取课程全部资料
     * @param courseId
     * @return
     */
    List<HashMap<String, Object>> getAllCourseDirectory(int courseId);

    /**
     * 学生退出课程
     * @param userId
     * @param courseId
     */
    void exitCourse(int userId, int courseId);

    /**
     * 获得未通过审核的课程
     * @return 未通过审核的课程列表
     */
    List<HashMap<String,Object>> getUnreviewedCourse();

    Integer auditCourseInfo(CourseInfoPojo courseInfoPojo);

    /**
     * 课程打分
     * @param courseGrade
     */
    void scoreCourse(CourseGradePOjo courseGrade);

    /**
     * 获取老师联系方式
     * @param courseId
     * @return
     */
    String linkTeacher(int courseId);

    /**
     * 获取课程所有学生列表
     * @param courseId
     * @return
     */
    List<HashMap<String, Object>> getAllStu(int courseId);
}
